package edu.gdkm.service.impl;

import edu.gdkm.dao.IStudentDao;
import edu.gdkm.dao.IUsersDao;
import edu.gdkm.pojo.Student;
import edu.gdkm.pojo.Users;
import edu.gdkm.service.IUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service  //@Component ->业务层@Service
public class UsersServiceImpl implements IUsersService {
    @Autowired
    IUsersDao iUsersDao;
    @Autowired
    IStudentDao iStudentDao;
    @Override
    public Integer insertUsers(Users users) {
        return iUsersDao.insertUsers(users);
    }

    @Override
    public Integer updateUsers(Users users) {
        return iUsersDao.updateUsers(users);
    }

    @Override
    public Integer delUsersByUid(Integer uid) {
        return iUsersDao.delUsersByUid(uid);
    }

    @Override
    public Users getUsersByUid(Integer uid) {
        return iUsersDao.getUsersByUid(uid);
    }

    @Override
    public List<Users> getUsersList() {
        return iUsersDao.getUsersList();
    }

    @Override
    public long getUsersCount() {
        return iUsersDao.getUsersCount();
    }

    /**修改原项目中UsersServiceImpl的登录业务Integer login(String name, String pwd)，要求如下：
     *  1、账号密码错误，返回0，
     *  2、账号密码正确但是未关联学生信息，返回1，
     *  3、账号密码正确并且已关联学生信息，返回2，
     *  提交IStudentDao和UsersServiceImpl代码
     * */
    @Override
    public Integer login(String name, String pwd) {
        Users userslogin=iUsersDao.login(name,pwd);
        //账号密码正确
        if(userslogin!=null){
            if(iStudentDao.getStudentByUid(userslogin.getUid())!=null){
                return 2;
            }else{
                return 1;
            }
        }else{
            return 0;
        }
    }
    /**实现UsersServiceImpl的中的注册业务public Users regis(String name,String pwd),要求如下：
     *  1、如果用户名重复，返回null，
     *  2、如果用户名未重复，返回带主键的Users对象
     *  注：携带自增主键可以在@Insert注解下方使用@Options设置
     *  @Insert("insert into users value(null,#{name},#{pwd})")
     *  @Options(useGeneratedKeys=true, keyProperty="uid", keyColumn="uid")
     *  public Integer insertUsers(Users users);
     * */
    @Override
    public Users regis(String name, String pwd) {
        List<Users> usersList = iUsersDao.getUsersList();
        boolean flag=false;
        for (Users users : usersList) {
            if(users.getName().equals(name)){
                flag=true;
                break;
            }
        }
        if(flag){
            return null;
        }else{
            Users users = new Users();
            users.setName(name);
            users.setPwd(pwd);
            iUsersDao.insertUsers(users);
            return users;
        }
    }
    /**
     * 实现UsersServiceImpl的中的绑定学生信息业务public boolean bindStudent(Users users,String name, String sno),要求如下:
     * 1、根据输入的学生姓名和学号给该学生绑定用户id，返回true
     * 2、如果该学生已绑定用户id，不可修改，返回false
     * 3、如果未找到合法学生，返回false
    * */
    @Override
    public boolean bindStudent(Users users, String name, String sno) {
        Student studentsql=iStudentDao.getStudentByNameAndSno(name,sno);
        if(studentsql==null||studentsql.getUid()!=null){
            return false;
        }else{
            iStudentDao.updateStudentUidBySid(studentsql.getSid(),users.getUid());
            return true;
        }


    }

}
